import tkinter as tk
from tkinter import messagebox
import os #作用为一个检查
import json#作用为翻译（文件和Python之间）
Memory="history.json"#这是个将来会出现在目录中的记忆，下次打开时读取它

def load_memory():
    if os.path.exists(Memory):#目录中如果有这个文件就读取
        with open(Memory, 'r') as file:
            return json.load(file)#将文件转换为python可识别的（memory是个文件）
    return {}#这里代表一个选择关系，如果上面的假设成立，那么读取，否则返回空字典

def save_memory(memory):
    with open(Memory, 'w') as file:
        json.dump(memory, file)#将python文件转化为一般文件，方便下次读取

memory=load_memory()#上传记忆，用小写memory储存

window=tk.Tk()
window.geometry("400x300")
window.title("To-Do List Application")

entry=tk.Entry(window)
entry.pack()
listbox = tk.Listbox(window)
listbox.pack()

if 'tasks' in memory:
    for task in memory['tasks']:
        listbox.insert(tk.END, task)#重回表格中

def button_touch():
    result=entry.get()
    listbox.insert(tk.END,result)
    entry.delete(0, tk.END)#END代表从最后开始

def button1_touch():
    selected_indices = listbox.curselection()#遍历获取所有的索引（区分为一个被选中的或者是没有被选中）
    if selected_indices:#这个被选中的
        for index in reversed(selected_indices):#反向删除
            listbox.delete(index)#除去这个东西
tk.Button(window,text="Add",command=button_touch).pack()#使其执行函数
tk.Button(window,text="Remove",command=button1_touch).pack()

def on_close():
    # 保存当前 Listbox 的内容
    memory['tasks'] = list(listbox.get(0, tk.END))
    save_memory(memory)
    window.destroy()

window.protocol("WM_DELETE_WINDOW", on_close)    
window.mainloop()